package br.com.sgpv2.entity.impostorenda;

import java.io.Serializable;
import java.math.BigDecimal;
import java.math.RoundingMode;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;


@Entity
@Table(name = "imr_imposto_renda")
@SequenceGenerator(name = "sequenceImpostoRenda", sequenceName = "imr_imposto_renda_imr_id_seq")
public class ImpostoRenda implements Serializable {

	private static final long serialVersionUID = 1L;

	private int id;
	private BigDecimal valorBaseInicial;
	private BigDecimal valorBaseFinal;
	private BigDecimal percentual;
	private BigDecimal valorDeduzir;
	private String anoReferencia;
	private String mesReferencia;
	private BigDecimal valorMinimoRetencao;
	private BigDecimal valorDependente;
	private int numeroLimiteDependentes;
	private BigDecimal valorEstatutario;

	/**
	 * Recupera o valor do ID da entidade.
	 */
	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	@Column(name = "imr_id", nullable = false)
	public int getId() {
		return id;
	}

	/**
	 * Configura o valor do ID da entidade.
	 */
	public void setId(int id) {
		this.id = id;
	}

	/**
	 * Recupera o valor base inicial.
	 */
	@Column(name = "imr_valor_base_inicial", nullable=false)
	public BigDecimal getValorBaseInicial() {
		if(valorBaseInicial!=null){
			valorBaseInicial = valorBaseInicial.setScale(2, RoundingMode.HALF_UP);
		}
		return valorBaseInicial;
	}

	/**
	 * Configura o valor base inicial.
	 */
	public void setValorBaseInicial(BigDecimal valorBaseInicial) {
		this.valorBaseInicial = valorBaseInicial;
	}

	/**
	 * Recupera o valor base final.
	 */
	@Column(name = "imr_valor_base_final", nullable=false)
	public BigDecimal getValorBaseFinal() {
		if(valorBaseFinal!=null){
		   valorBaseFinal = valorBaseFinal.setScale(2, RoundingMode.HALF_UP);
		}
		return valorBaseFinal;
	}

	/**
	 * Configura o valor base final.
	 */
	public void setValorBaseFinal(BigDecimal valorBaseFinal) {
		this.valorBaseFinal = valorBaseFinal;
	}

	/**
	 * Recupera o percentual.
	 */
	@Column(name = "imr_percentual", nullable=false)
	public BigDecimal getPercentual() {
		if(percentual!=null){
		   percentual = percentual.setScale(2, RoundingMode.HALF_UP);
		}
		return percentual;
	}

	/**
	 * Configura o percentual.
	 */
	public void setPercentual(BigDecimal percentual) {
		this.percentual = percentual;
	}

	/**
	 * Recupera o valor a deduzir.
	 */
	@Column(name = "imr_valor_deduzir", nullable=false)
	public BigDecimal getValorDeduzir() {
		if(valorDeduzir!=null){
		   valorDeduzir = valorDeduzir.setScale(2, RoundingMode.HALF_UP);
		}
		return valorDeduzir;
	}

	/**
	 * Configura o valor a deduzir.
	 */
	public void setValorDeduzir(BigDecimal valorDeduzir) {
		this.valorDeduzir = valorDeduzir;
	}

	/**
	 * Recupera o ano de referência.
	 */
	@Column(name = "imr_ano_referencia", nullable=false)
	public String getAnoReferencia() {
		return anoReferencia;
	}

	/**
	 * Configura o ano de referência.
	 */
	public void setAnoReferencia(String anoReferencia) {
		this.anoReferencia = anoReferencia;
	}

	/**
	 * Recupera o mês de referência.
	 */
	@Column(name = "imr_mes_referencia", nullable=false)
	public String getMesReferencia() {
		return mesReferencia;
	}

	/**
	 * Configura o mês de referência.
	 */
	public void setMesReferencia(String mesReferencia) {
		this.mesReferencia = mesReferencia;
	}

	/**
	 * Recupera o valor mínimo de rentenção.
	 */
	@Column(name = "imr_valor_minimo_retencao", nullable=false)
	public BigDecimal getValorMinimoRetencao() {
		return valorMinimoRetencao;
	}

	/**
	 * Configura o valor mínimo de rentenção.
	 */
	public void setValorMinimoRetencao(BigDecimal valorMinimoRetencao) {
		this.valorMinimoRetencao = valorMinimoRetencao;
	}

	/**
	 * Recupera o valor do dependente.
	 */
	@Column(name = "imr_valor_dependente", nullable=false)
	public BigDecimal getValorDependente() {
		return valorDependente;
	}

	/**
	 * Configura o valor do dependente.
	 */
	public void setValorDependente(BigDecimal valorDependente) {
		this.valorDependente = valorDependente;
	}

	/**
	 * Recupera o número limite de dependentes.
	 */
	@Column(name = "imr_numero_limite_dependentes", nullable=false)
	public int getNumeroLimiteDependentes() {
		return numeroLimiteDependentes;
	}

	/**
	 * Configura o número limite de dependentes.
	 */
	public void setNumeroLimiteDependentes(int numeroLimiteDependentes) {
		this.numeroLimiteDependentes = numeroLimiteDependentes;
	}

	/**
	 * Recupera o valor do estatutário.
	 */
	@Column(name = "imr_valor_estatutario", nullable=false)
	public BigDecimal getValorEstatutario() {
		return valorEstatutario;
	}

	/**
	 * Configura o valor do estatutário.
	 */
	public void setValorEstatutario(BigDecimal valorEstatutario) {
		this.valorEstatutario = valorEstatutario;
	}

}
